[PATCH] [JITLink] Always unmap standard segments in InProcessMemoryManager::deallocat...
authorMin-Yih Hsu <min.hsu@sifive.com>
Sat, 17 Feb 2024 00:19:56 +0000 (16:19 -0800)
committerSylvestre Ledru <sylvestre@debian.org>
Wed, 12 Feb 2025 13:26:20 +0000 (14:26 +0100)
commit984b0610da74200812f473370533bf7502911c50
tree9121a1e4d298620d6869382485f7a90d912189b1
parent2cd47fa10e75813ae364466e83494d57696a4110
[PATCH] [JITLink] Always unmap standard segments in InProcessMemoryManager::deallocate (#81943)

Right now InProcessMemoryManager only releases a standard segment (via
sys::Memory::releaseMappedMemory) in `deallocate` when there is a
DeallocAction associated, leaving residual memory pages in the process
until termination.
Despite being a de facto memory leak, it won't cause a major issue if
users only create a single LLJIT instance per process, which is the most
common use cases. It will, however, drain virtual memory pages if we
create thousands of ephemeral LLJIT instances in the same process.

This patch fixes this issue by releasing every standard segments
regardless of the attached DeallocAction.

Gbp-Pq: Name rv64-fix-mm-leak.diff
llvm/lib/ExecutionEngine/JITLink/JITLinkMemoryManager.cpp